package com.example.service;

import com.example.bean.Student;
import com.example.dao.StudentDAO;

import java.util.List;

/**
 * 学生业务逻辑JavaBean
 * 负责处理学生相关的业务逻辑
 */
public class StudentService {
    
    private StudentDAO studentDAO;
    
    /**
     * 构造函数，初始化DAO
     */
    public StudentService() {
        this.studentDAO = new StudentDAO();
    }
    
    /**
     * 获取所有学生列表
     * @return 学生列表
     */
    public List<Student> getAllStudents() {
        return studentDAO.findAll();
    }
    
    /**
     * 根据ID获取学生信息
     * @param id 学生ID
     * @return 学生对象，如果不存在返回null
     */
    public Student getStudentById(int id) {
        return studentDAO.findById(id);
    }
    
    /**
     * 添加学生
     * @param student 学生对象
     * @return 是否添加成功
     */
    public boolean addStudent(Student student) {
        // 业务逻辑验证
        if (student == null) {
            return false;
        }
        
        if (student.getName() == null || student.getName().trim().isEmpty()) {
            return false;
        }
        
        if (student.getNo() == null || student.getNo().trim().isEmpty()) {
            return false;
        }
        
        // 调用DAO层添加
        return studentDAO.add(student);
    }
    
    /**
     * 更新学生信息
     * @param student 学生对象
     * @return 是否更新成功
     */
    public boolean updateStudent(Student student) {
        // 业务逻辑验证
        if (student == null || student.getId() <= 0) {
            return false;
        }
        
        if (student.getName() == null || student.getName().trim().isEmpty()) {
            return false;
        }
        
        if (student.getNo() == null || student.getNo().trim().isEmpty()) {
            return false;
        }
        
        // 调用DAO层更新
        return studentDAO.update(student);
    }
    
    /**
     * 删除学生
     * @param id 学生ID
     * @return 是否删除成功
     */
    public boolean deleteStudent(int id) {
        // 业务逻辑验证
        if (id <= 0) {
            return false;
        }
        
        // 调用DAO层删除
        return studentDAO.delete(id);
    }
    
    /**
     * 验证学号是否已存在
     * @param no 学号
     * @return 是否存在
     */
    public boolean isStudentNoExists(String no) {
        if (no == null || no.trim().isEmpty()) {
            return false;
        }
        
        List<Student> students = studentDAO.findAll();
        for (Student student : students) {
            if (no.equals(student.getNo())) {
                return true;
            }
        }
        return false;
    }
    
    /**
     * 验证身份证号是否已存在
     * @param pId 身份证号
     * @return 是否存在
     */
    public boolean isStudentPIdExists(String pId) {
        if (pId == null || pId.trim().isEmpty()) {
            return false;
        }
        
        List<Student> students = studentDAO.findAll();
        for (Student student : students) {
            if (pId.equals(student.getpId())) {
                return true;
            }
        }
        return false;
    }
}

